package com.ww.springboot.boot.javabase.hashmap;

import java.util.Map;

/**
 * 描述：hashmap key生成规则
 *
 * hash 简单结构
 *
 * 1.将key的hash值存到数组 重复的hash则使用链表存储 -》高版本改成红黑树改成
 *
 * 使用^是为了将高位与低位一起参与hash 减少hash重复概率
 *
 * ^ 异或使用场景
 * 1.交换两个数位置
 * 2.排除偶次重复 --相同的数字异或=0 任何数与0异或=本身
 *
 * >>> 右移  小数点固定 右移数字一位 相当于/2
 * <<< 左移
 *
 * @author wanwei
 * @since 2021-07-28 11:28
 */
public class Demo1 {

    public static void main(String[] args) {

        Map<String,String> map = new MyHashMap<>();
        map.put("key","value");

        System.out.println(map.get("key"));

        System.out.println(hash("key"));
    }

    static final int hash(Object key) {
        int h;
        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
    }
}
